//--------------------------------------------------------------------------
// 
//  Copyright (c) Chili Software.  All rights reserved. 
// 
//  File: IDynamicPopulateHelper.cs
//
//  Description: Interface for manually populating persistent objects.
// 
//--------------------------------------------------------------------------

using System;

namespace Chili.Opf3
{
	/// <summary>
	/// This interface that is implemented by objects that are populated without
	/// reflection.
	/// </summary>
	/// <remarks>
	/// 	<para>This marker interface is implemented by classes that won't let the framework
	///     populate (via reflection) them with data or retrieve data from them via reflection.</para>
	/// 	<para>If the framework encounters a persistent object that implements this
	///     interface it injects runtime code to populate the persistent object without using reflection.</para>
	///		<para>The same behaviour is also reached by setting the <see cref="Chili.Opf3.Mapping.TypeMapping">TypeMapping's</see> AutoInjectDynamicPopulateHelper
	///		property to true. Setting that property to true injects code in all persistent objects!</para>
	/// </remarks>
	/// <example>
	///     The following example shows how to implement the interface. 
	///     <code lang="CS">
	/// [Persistent("USER")]
	/// public class User : IDynamicPopulateHelper
	/// {
	///     // ... Other properties and code.
	/// }
	///     </code>
	/// </example>
	public interface IDynamicPopulateHelper
	{
	}
}
